Quant III and Bayesian Measurement
November 29, 2023
How representative is a government of its people?
Anonymous records of what candidate each voter picked in each race on the ballot
Modelling challenges
Categorical outcome with different options for each race
People vote in different races
1.3B “bubbles” and 50m voters in 2020 election
Continuous, latent outcome with categorical indicators –> IRT model
\[ \pi_{j,k(c)} = logit^{-1} (\gamma_{k(c)} (\alpha_j - \beta_{k(c)})) \]
where \(j\) indexes individuals and \(k(c)\) indexes a specific candidate \(c\) in a race \(k\).
\(\gamma\) is the “discrimination” parameter
\(\alpha\) is the latent trait
\(\beta\) is the “difficulty” parameter
\(\kappa = \frac{\alpha}{\beta}\) is the cutpoint between each choice
The scale and location of \(\alpha\) are unidentified (can add or multiply a constant with no change in likelihood)
\(\gamma\)’s sign can also flip around with relation to the sign of \(\alpha\).
Priors
Uninformative, standard priors for other parameters
Future work: Informative priors using party or NOMINATE/DIME scores to help with identification and speed convergence
// Priors
mu_beta ~ cauchy(0, 5);
alpha ~ std_normal();
for (k in 1:K){
beta_raw[k,] ~ normal(0, sigma_beta);
gamma_raw[k,] ~ lognormal(0, sigma_gamma);
}
sigma_beta ~ cauchy(0, 5);
sigma_gamma ~ cauchy(0, 5);
// Likelihood
for (j in 1:J) {
matrix[K, C] logits = rep_matrix(-1e8, K, C);
for (k in 1:K) {
if (eligibility[j, k] == 1) {
for (c in 1:C) {
if (candidates[k, c] == 1) {
logits[k, c] = gamma[k, c] * alpha[j] - (beta[k, c] + mu_beta);
}
}
target += categorical_logit_lpmf(votes[j, k] | logits[k]');
}
}
}Work with the binary 2PL results, since they are easiest to interpret
Reece – CVR Ideals